from django_redis import get_redis_connection


# 1. 得到购物车中勾选商品字典的函数
def get_cart_selected_dict(user):
    # 3.1 得到一个redis的连接对象  {1000:2}
    conn = get_redis_connection('carts')
    # 3.2 查出hash中的数据
    hashr = conn.hgetall('carts_{}'.format(user.id))
    print(hashr)  # {b'14': b'1', b'16': b'1'}
    # 3.3 查出set中的数据
    setr = conn.smembers('selected_{}'.format(user.id))
    print(setr)  # {b'14'}
    # 3.4 构建一个新的已勾选的购物车字典
    carts = {
        sku_id_b.decode(): int(count_b.decode())
        for (sku_id_b, count_b) in hashr.items()
        if sku_id_b in setr
    }
    # print(carts)  # {16: 2}
    return carts


# 2. 删除购物车中勾选商品数据的函数
def del_cart_selected_sku(user):
    # 1. 得到一个redis连接对象
    conn = get_redis_connection('carts')
    # 2. 通过redis连接对象的到管道
    pl = conn.pipeline()
    # 3. 移除hash中key在set中的数据
    setr = conn.smembers('selected_{}'.format(user.id))  # {b'16', b'14'}
    pl.hdel('carts_{}'.format(user.id), *setr)
    # 4. 删除整个set
    pl.delete('selected_{}'.format(user.id))
    # 5. 执行管道中的命令
    pl.execute()